1. Field of the Invention
The invention concerns a color management system whereby a gamut mapping algorithm can be embedded within a color management profile such that a custom or special-purpose gamut mapping algorithm can be externally supplied to a color matching module for mapping color image data from one color gamut to another.
2. Description of the Related Art
The use of digital devices to record, process, view and output color images is increasing due to the growing use of the world wide web, digital cameras, and computing devices with ever-increasing processing power. In order for a particular color image to appear the same on an output device as it did on an input device, the color image data corresponding to the color image is usually processed prior to being depicted by the output device. For example, a computer user may import a color image, such as a photograph, and edit the image to the user's satisfaction while viewing the image on a color monitor, after which the user may wish to print the image on an attached printer, such as a color bubble jet printer. Without color management processing, the color image will probably not appear the same when printed out by the printer as it did on the monitor.
The difference in appearance of the color image between the two device occurs because the monitor and the printer use different types and combinations of colorants to produce the color image. A monitor uses light on a black screen to produce color pixels in a color image and a color bubble jet printer uses ink on white paper to produce color. Therefore, a color matching process is typically used prior to sending the color image data to the output device to convert a color image from the colorant space of the input device to the colorant space of the output device so that the output device can generate a color image with the same, or similar, appearance as that produced by the input device.
In addition to the difference in color spaces between the input device and the output device, there also usually exists a difference between the color gamuts of the two devices. For instance, a printer may have a color gamut boundary that is incapable of representing the full range of the color green displayed on the color monitor. In such a case, the color image data is modified by a gamut mapping algorithm (GMA) in order for the printer to reasonably represent the out-of-gamut green pixels of the input image. Therefore, the gamut mapping process is also typically applied to the color image data in order to bring the out-of-gamut color pixels within the color gamut of the output device. These two functions, color matching and gamut mapping, are typically applied by a color management system within a computer or other digital device.
Many currently used color management systems utilize a color management module (CMM) whereby input color image data representing an input image is transformed from the colorant space of the input device into a device and viewing condition independent appearance space. This transformation typically utilizes a color transformation table contained in a color profile for the input device. Next, a gamut mapping algorithm (GMA), which is typically contained in the CMM, is applied to the color image data in the device and viewing condition independent appearance space. The GMA modifies the color image data in an effort to ensure that it can be represented by the output device by adjusting the out-of-gamut data points to be within the color gamut boundary of the output device.
There are several different types of gamut mapping algorithms currently in existence; however, the type of gamut mapping algorithm available in a given CMM is typically within the sole control of the developer of the CMM. Some GMAs require the color gamut boundaries of both the input device and output device in order to perform gamut mapping on the color image data. After the GMA is applied, the color image data is transformed from the device and viewing condition independent appearance space to the output device colorant space. This transformation typically utilizes a color transformation table contained in a color profile for the output device. The color image data is then sent to output device to be rendered.
Different types of GMAs utilize different methodologies and techniques of gamut mapping for modifying the color image data to fit within the color gamut boundary of the output device. Typically, each CMM includes at least one GMA which is provided by the developers of the CMM. Some CMMs provide multiple GMAs to select from depending on the GMAs that the developers of the CMM decided to include. There are many circumstances, such as when using special applications or improved printer drivers, when either a specific GMA or a custom GMA is desired by an independent developer who is not associated with the developers of the CMM. Currently there are only two basic options available to an independent developer who wishes to control the selection and application of a specific GMA to color image data.
First, an independent developer may choose one of the few GMAs that are provided in the CMM, if more than one is provided, but even then the independent developer has no control over how the selected GMA is specifically applied to the color image data. In the alternative to selecting a GMA provided in the CMM, the independent developer may provide a color profile for use by the CMM in which a specific GMA has been pre-applied to the color transformation table of the color profile. Unfortunately, this pre-applied GMA can only be utilized when the specific color profile containing the modified color transformation table is provided to the GMA. In addition, the independent developer must somehow be capable of instructing the CMM not to use its default GMA in such a situation.
In sum, the known art is not seen to provide a color management system whereby an independent developer can supply a custom or special-purpose GMA from an external source to a CMM for application to color image data.